export default {
		namespaced: true,
		state:{
			
			//购物车的数组，用来存购物车中每个傻姑娘品的信息对象
			//6个属性goods_id,goods_name,goods_price,goods_count,goods_small_logo,goods_state
			// cart:JSON.parse(uni.getStorageSync('cart') || '[]'),
			  // cart: [],
			  cart:JSON.parse(uni.getStorageSync('cart') || '[]'),
		},

		///模块的mutations方法
		mutations:
		{
			addCart(state,goods)
			{
				//提交的商品的Id，查询购物车中是否存在这件商品
				//商品不存在，为undefined否则，为查询的商品信息
				const findResult=state.cart.find((x)=>x.goods_id===goods.goods_id)
				if(!findResult)
				{
					//如果购物车中没有这件商品，则直接push
					state.cart.push(goods)
				}else{
					///如果购物车有这件商品，则只更新数据即可
					findResult.goods_count++
				}
				// 通过 commit 方法，调用 m_cart 命名空间下的 saveToStorage 方法
				this.commit('cart/saveToStorage')
				
			},
			// 将购物车中的数据持久化存储到本地
			saveToStorage(state) {
			   uni.setStorageSync('cart', JSON.stringify(state.cart))
			} ,
			updateGoodsState(state,goods)
			{
				const findResult=state.cart.find((x)=>x.goods_id===goods.goods_id)
				// 根据 goods_id 查询购物车中对应商品的信息对象
				if(findResult)
				{
					findResult.goods_state=goods.goods_state
					this.commit('cart/saveToStorage')
				}
			},updateGoodsNum(state,goods)
			{
				// 调用数组的 filter 方法进行过滤
				const findResult=state.cart.find((x)=>x.goods_id===goods.goods_id)
				if(findResult)
				{
					findResult.goods_count=goods.goods_count
				}
				// 持久化存储到本地
				this.commit('cart/saveToStorage')
				
			}
			,removeGoodsById(state,goods_id)
			{
				state.cart=state.cart.filter(x=>x.goods_id!==goods_id)
				this.commit('cart/saveToStorage')
			},
			updateAllGoodState(state,newState)
			{
				state.cart.forEach(x=>x.goods_state=newState)
				this.commit('cart/saveToStorage')
			}
			
			
		},
		getters:{
			 // 统计购物车中商品的总数量
 			total(state){
			   //    let c = 0 
				  // // 循环统计商品的数量，累加到变量 c 中
			   //    state.cart.forEach(goods => c+= goods.goods_count)
			   //    return c
			   return state.cart.reduce((total,item)=>total+=item.goods_count,0)
			}, 
			checkedCount(state)
			{
				return state.cart.filter(x=>x.goods_state).reduce((total,item)=>total+=item.goods_count,0)
			},
			checkedGoodsAmount(state)
			{
				return state.cart.filter(x=>x.goods_state).reduce((total,item)=>total+=item.goods_count*item.goods_price,0).toFixed(2)
			}
		},actions:
		{
			
		}
	}